package com.ak.demo.controller;


import com.ak.demo.entity.User;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * Exchange 模式 适用于直播间 ，直接发送，零临时队列，或者临时创建的聊天间，可以突然消失的
 *发送格式
 * exchange/<exchange name>
 * 必须是 exchange 开头，然后 / 交换机名称
 */
@Slf4j
@Controller
public class ExchangeController {

    @RequestMapping("/index")
    public String kk(){
        return "index";
    }

    @Autowired
    private SimpMessagingTemplate template;

    /**
     * 点对点
     * @param user
     * @return
     */
    @MessageMapping("/sendToUser")
    public void sendToUser(User user){

        log.info("单独发"+user.toString());
        // exchange
        // sendtouser 为交换机的名称
        template.convertAndSend("/exchange/sendToUser/"+user.getToId(),JSONObject.toJSONString(user));

    }

    /**
     *  群发信息，随时随地消除对象
     * @param user
     */
    @MessageMapping("/sendToAll")
    public void sendToAll(User user){
        log.info("群发"+user.toString());
        // exchange
        // sendtoAll为交换机的名称
        template.convertAndSend("/exchange/sendToAll/all", JSONObject.toJSONString(user));

    }
}
